📝 Резюме · 📄 Оригинал (19.3 KB)
https://x.com/dhh/status/2033580762402902188

Пересказ: ONCE is back! It's now a full-fledged application server for running dockerized

Источник: https://x.com/dhh/status/2033580762402902188

Введение

ONCE — это революционный сервер приложений для запуска нескольких контейнеризованных веб-приложений на локальной машине, домашнем сервере, в облаке или на локальной инфраструктуре. Инструмент был создан для упрощения развертывания и управления приложениями, изначально разработанный для хостинга WriteBook, Campfire и Fizzy на одной машине. С развитием AI-кодирования (Vibe-кодирование) ONCE стал идеальной платформой для развертывания экспериментов, созданных с помощью ИИ, с единой точкой мониторинга, отслеживания ошибок, проверки емкости сервера и выполнения резервных копий без простоев.


Установка и базовая конфигурация

Процесс установки

ONCE устанавливается с помощью простой команды curl, которая автоматически обнаруживает систему и выполняет необходимые настройки. Единственное требование — наличие Docker. На Linux машинах, если Docker не установлен, ONCE установит его автоматически.

При первом запуске пользователю предлагается выбрать из трех встроенных приложений:

  • Campfire — чат-приложение для командного общения
  • Fizzy — доска Kanban для управления задачами
  • WriteBook — платформа для создания и обмена инструкциями и документацией

Кроме предустановленных приложений, поддерживается установка пользовательских Docker-образов.

Локальная установка Campfire

При настройке Campfire локально (на адресе chat.localhost) ONCE загружает Docker-образ из своего репозитория. После установки отображается основная панель управления с информацией о ресурсах машины:

  • Использование процессора (CPU)
  • Потребление оперативной памяти (RAM)
  • Доступное дисковое пространство

Приложение становится готовым к использованию сразу после установки. Пользователь регистрируется, указывая имя, электронную почту и пароль, и может начать использование приложения.


Развертывание нескольких приложений

Одновременный запуск нескольких сервисов

Главная магия ONCE заключается в управлении несколькими приложениями на одной машине. Пользователь может легко добавлять новые приложения, используя команду для добавления нового приложения (N).

WriteBook устанавливается похожим образом (например, на books.localhost.com) и разделяет аналогичный интерфейс входа с Campfire, но предоставляет функциональность создания и управления книгами.

Fizzy отличается тем, что требует настройки внешних сервисов. Для отправки электронных писем из Fizzy необходимо сконфигурировать SMTP-сервер (Postmark или аналогичный) через раздел настроек (S → E для email).

На одной локальной машине можно одновременно запускать все три приложения, и ONCE управляет их ресурсами и мониторингом.


Поддержка пользовательских приложений

Гибкость стека технологий

ONCE поддерживает любой стек технологий, несмотря на то, что встроенные приложения (WriteBook, Campfire, Fizzy) написаны на Ruby on Rails. Платформа может запускать приложения, написанные на:

  • Go
  • JavaScript/Node.js
  • Другие языки программирования

Демонстрация с Go и HTML5

В демонстрации показано создание простой wiki на Go с использованием SQLite. Приложение:

  • Упаковано в Docker-контейнер
  • Использует файловое хранилище для базы данных (storage)
  • Отвечает на запросы /up с кодом 200 OK — критический параметр для ONCE, обозначающий готовность приложения принимать запросы

Важный момент: ONCE использует /up endpoint для определения момента обновления приложения без потери запросов (zero-downtime updates).

Дополнительно продемонстрирована простая игра "Snake" на чистом HTML5 с визуализацией на базе единого HTML файла, запущенная в Nginx контейнере. Это демонстрирует, что ONCE поддерживает не только динамические приложения, но и статические веб-приложения.


Развертывание в облаке

Облачная установка на Hetzner VM

Процесс установки ONCE на облачном сервере (Hetzner VM) идентичен локальной установке — та же команда curl для Linux. Для полноценного использования используется:

  • Cloudflare для управления DNS
  • Wildcard домены (например, *.amaros.io) для маршрутизации на облачный IP

Развертывание приложений в облаке

На облачном сервере процесс аналогичен локальной установке:

  1. Campfire устанавливается на chat.amaros.io с полной интернет-доступностью
  2. WriteBook развертывается на books.amaros.io
  3. Пользовательские приложения (Wiki, Snake game) запускаются на соответствующих доменах

Главное преимущество: приложения доступны в интернете и могут быть поделены с другими пользователями.


Управление Docker-образами и GitHub интеграция

Публикация контейнеров в реестры

AI-кодирование (Vibe-coding) приложений создает Docker-образы, которые должны быть загружены в публичный реестр (GitHub Container Registry) для использования в облаке. Процесс:

  1. Образы генерируются AI моделью (например, Claude/Kimi)
  2. Образы отправляются на GitHub через CLI
  3. Репозитории приватные по умолчанию — требуется изменение видимости на public в Package Settings

Интересный момент: GitHub CLI не поддерживает изменение видимости пакетов через команду, требуя ручного взаимодействия с веб-интерфейсом.


Мониторинг и обновления

Панель управления ONCE

ONCE обеспечивает полный мониторинг всех запущенных приложений:

  • Использование CPU и памяти для каждого приложения
  • Трафик и активность приложений
  • Просмотр логов (команда G) — позволяет видеть логи приложения в реальном времени
  • Бот-активность — системы видят попытки автоматизированных сканеров (например, Chrome 146)

Система обновлений

ONCE автоматически проверяет обновления приложений (по умолчанию раз в день). Пользователь может:

  • Вручную проверить обновления (команда U)
  • Перезагрузить приложение без потери данных
  • Переустановить приложение, если обновление не срабатывает

Процесс обновления использует механизм проверки здоровья — приложение считается готовым только после получения ответа 200 OK на запрос /up.


Практические примеры и демонстрация

Полный жизненный цикл приложения

Демонстрация охватывает:

  1. Локальную разработку с использованием AI-кодирования (Vibe-coding)
  2. Создание одного выстрела (one-shot) — когда AI-модель создает полностью функциональное приложение с первой попытки
  3. Развертывание в облаке на Hetzner сервере с публичными доменами
  4. Обновление и улучшение приложений (например, изменение цветовой схемы Snake game на "Lumen Industries", исправление ошибок)
  5. Управление версиями контейнеров в GitHub

Вызовы при использовании AI-кодирования

  • Не все приложения успешно компилируются с первой попытки (один из примеров Wiki не работал на первый раз)
  • AI-модели требуют указания деталей, таких как обязательность 200 OK ответа на /up endpoint
  • Отладка может потребовать использования инструментов, таких как Playwright CLI для дебага веб-приложений

Ключевые характеристики и преимущества

Простота развертывания

  • Одна команда curl для установки
  • Автоматическое обнаружение системы и зависимостей
  • Отсутствие сложной конфигурации

Масштабируемость

  • Поддержка любого стека технологий (Ruby on Rails, Go, HTML5, etc.)
  • Управление несколькими приложениями на одной машине/сервере
  • Развертывание от локальной машины до облака без изменения процесса

Мониторинг и надежность

  • Единая панель управления для всех приложений
  • Zero-downtime обновления благодаря механизму проверки здоровья
  • Полная история логов и мониторинг ресурсов

Интеграция с современным развитием

  • Идеальная платформа для AI-кодирования — развертывание экспериментов за минуты
  • Автоматизация сборки и развертывания Docker-контейнеров
  • Интеграция с GitHub для управления контейнерами

Заключение

ONCE представляет собой полностью сформировавшийся сервер приложений, который радикально упрощает развертывание и управление веб-приложениями как на локальных машинах, так и в облаке. Платформа становится идеальной средой для AI-кодирования, позволяя разработчикам и AI-моделям быстро создавать, тестировать и развертывать приложения.

Преимущества подхода ONCE:

  • Минимальная кривая обучения — достаточно одной команды и выбора приложения
  • Отсутствие vendor lock-in — любой Docker-образ может быть развернут
  • Производственная готовность — встроенный мониторинг, логирование и управление ресурсами
  • Идеален для экспериментов — быстрое развертывание множества приложений

ONCE переопределяет, как разработчики могут развертывать и управлять приложениями в эпоху AI-кодирования, делая процесс доступным даже для тех, кто не специалист в DevOps.